package windbell.domain.risk;

import edu.fudan.langlab.domain.document.IDocument;
import edu.fudan.langlab.domain.document.IDocumentContainer;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import windbell.domain.risk.RiskCause;
import windbell.domain.risk.RiskCheckItem;
import windbell.domain.risk.RiskFixType;
import windbell.domain.risk.RiskLevel;
import windbell.domain.risk.RiskReportDerived;
import windbell.domain.risk.RiskReportQrCode;
import windbell.domain.risk.RiskReportStatus;
import windbell.domain.risk.RiskType;
import windbell.domain.risk.impl.RiskReportImpl;
import windbell.domain.risk.proxy.RiskReportProxy;

@EntityImplementation(implementBy = RiskReportImpl.class)
public interface RiskReport extends IModelObject, IDocumentContainer {
  public abstract RiskCheckItem getRiskCheckItem();
  
  public abstract Date getFoundDate();
  
  public abstract RiskReport setFoundDate(final Date foundDate);
  
  public abstract String getReason();
  
  public abstract RiskReport setReason(final String reason);
  
  public abstract String getAnalysis();
  
  public abstract RiskReport setAnalysis(final String analysis);
  
  public abstract String getSolution();
  
  public abstract RiskReport setSolution(final String solution);
  
  public abstract String getLocation();
  
  public abstract RiskReport setLocation(final String location);
  
  public abstract RiskType getRiskType();
  
  public abstract RiskReport setRiskType(final RiskType riskType);
  
  public abstract Double getCost();
  
  public abstract RiskReport setCost(final Double cost);
  
  public abstract String getTaskOwner();
  
  public abstract RiskReport setTaskOwner(final String taskOwner);
  
  public abstract String getReviewOwner();
  
  public abstract RiskReport setReviewOwner(final String reviewOwner);
  
  public abstract Date getDueDate();
  
  public abstract RiskReport setDueDate(final Date dueDate);
  
  public abstract Date getFinishDate();
  
  public abstract RiskReport setFinishDate(final Date finishDate);
  
  public abstract String getDescription();
  
  public abstract RiskReport setDescription(final String description);
  
  public abstract RiskLevel getRiskLevel();
  
  public abstract RiskReport setRiskLevel(final RiskLevel riskLevel);
  
  public abstract String getChecker();
  
  public abstract RiskReport setChecker(final String checker);
  
  public abstract RiskCause getRiskCause();
  
  public abstract RiskReport setRiskCause(final RiskCause riskCause);
  
  public abstract String getReporter();
  
  public abstract RiskReport setReporter(final String reporter);
  
  public abstract RiskFixType getRiskFixType();
  
  public abstract RiskReport setRiskFixType(final RiskFixType riskFixType);
  
  public abstract RiskReportDerived getDerived();
  
  public abstract RiskReport setDerived(final RiskReportDerived derived);
  
  public abstract Collection<RiskReportQrCode> getDocuments();
  
  public abstract RiskReportQrCode createAndAddtoDocuments();
  
  public abstract RiskReportQrCode createAndAddtoDocuments(final Procedure1<RiskReportQrCode> updater);
  
  public abstract RiskReport removeFromDocuments(final RiskReportQrCode riskReportQrCode);
  
  public abstract RiskReport removeAllDocuments();
  
  public abstract RiskReportStatus getStatus();
  
  public abstract void start();
  
  public abstract void update(final Procedure1<? super RiskReport> updater);
  
  public abstract IDocument createDocument(final Procedure1<? super IDocument> init);
  
  public abstract void removeDocument(final IDocument document);
  
  public abstract void finish();
  
  public abstract void reopen();
  
  public abstract Boolean isCreated();
  
  public abstract Boolean isFinished();
  
  public abstract RiskReportProxy toProxy();
}
